﻿Public Class RegistrarPuesto

    Dim codigoNivel As Integer

    ''' <summary>
    ''' Metodo que inicia cuando el formulario es cargado.
    ''' </summary>
    ''' <remarks>Creado por: Manuel Chaves inicio:14/6/2010 mod:22/06/210</remarks>
    Private Sub RegistrarPuesto_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        llenarDepartamentos()
        llenarNiveles()
        llenarTipoSalario()
    End Sub

    ''' <summary>
    ''' Se encarga de llenar el combobox con los tipos de salario.
    ''' </summary>
    ''' <remarks>Creado por: Manuel Chaves inicio:14/6/2010 mod:22/06/210</remarks>
    Private Sub llenarTipoSalario()
        '
        Dim opciones = New Dictionary(Of String, Integer)()
        opciones = Logica.Gestor.obtenerTiposSalario
        '
        cmbSalario.DataSource = New BindingSource(opciones, Nothing)
        cmbSalario.DisplayMember = "Key"
        cmbSalario.ValueMember = "Value"
    End Sub

    ''' <summary>
    ''' Llena los combobx con los datos de los departamentos.
    ''' </summary>
    ''' <remarks>Creado por: Manuel Chaves inicio:14/6/2010 mod:22/06/210</remarks>
    Private Sub llenarDepartamentos()
        lblDepartamento.Text = Logica.Gestor.obtenerNombreDepartamentoPorCodigoNivel(codigoNivel)
    End Sub

    ''' <summary>
    ''' Llena el combobox con los niveles
    ''' </summary>
    ''' <remarks>Creado por: Manuel Chaves inicio:14/6/2010 mod:22/06/210</remarks>
    Private Sub llenarNiveles()
        lblNivel.Text = Logica.Gestor.obtenerNivelPorCodigoNivel(codigoNivel)
    End Sub

    ''' <summary>
    ''' Evento que se dispara cuando el combobox de salario es abierto y cerrado.
    ''' </summary>
    ''' <remarks>Creado por: Manuel Chaves inicio:14/6/2010 mod:22/06/210</remarks>
    Private Sub cmbSalario_DropDownClosed(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmbSalario.DropDownClosed
        txtSalario.Enabled = True
        If cmbSalario.SelectedValue = 3 Then
            txtSalario.Enabled = False
            txtSalario.Text = ""
        End If
    End Sub

    ''' <summary>
    ''' Retroalimentacion de exito.
    ''' </summary>
    ''' <remarks>Creado por: Manuel Chaves inicio:14/6/2010 mod:22/06/210</remarks>
    Private Sub alertarExito()
        MsgBox("El puesto se registró con éxito", MsgBoxStyle.Information, "Exito")
        Me.Close()
    End Sub

    ''' <summary>
    ''' Retroalimentacion de error.
    ''' </summary>
    ''' <remarks>Creado por: Manuel Chaves inicio:14/6/2010 mod:22/06/210</remarks>
    Private Sub alertarError()
        lblMsj.Text = "Ocurrió un error"
        lblMsj.ForeColor = Color.Red
        lblMsj.Visible = True
    End Sub

    ''' <summary>
    ''' Retroalimentacion de campos vacios
    ''' </summary>
    ''' <remarks>Creado por: Manuel Chaves inicio:14/6/2010 mod:22/06/210</remarks>
    Private Sub alertarVacio()
        lblMsj.Text = "Debe llenar todos los campos"
        lblMsj.ForeColor = Color.Red
        lblMsj.Visible = True
    End Sub

    ''' <summary>
    ''' Revision de validacion.
    ''' </summary>
    ''' <remarks>Creado por: Manuel Chaves inicio:14/6/2010 mod:22/06/210</remarks>
    Private Function validar() As Boolean
        If Not validarVacio() Then
            alertarVacio()
            Return False
        End If
        Return True
    End Function

    ''' <summary>
    ''' Revisa campos vacios necesarios.
    ''' </summary>
    ''' <remarks>Creado por: Manuel Chaves inicio:14/6/2010 mod:22/06/210</remarks>
    Private Function validarVacio() As Boolean
        If txtNombre.Text = "" Then
            Return False
        End If
        If Not cmbSalario.SelectedValue = 3 Then
            If txtSalario.Text = "" Then
                Return False
            End If
        End If
        If txtDescripcion.Text = "" Then
            Return False
        End If
        Return True
    End Function

    ''' <summary>
    ''' Evento que se dispara cuando el boton de OK es clickeado.
    ''' </summary>
    ''' <remarks>Creado por: Manuel Chaves inicio:14/6/2010 mod:22/06/210</remarks>
    Private Sub btnOk_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOk.Click
        If txtSalario.Enabled = False Then
            txtSalario.Text = "0"
        End If
        lblMsj.Visible = False
        If Not validar() Then
            Return
        End If

            Try
                Logica.Gestor.registrarPuesto(txtNombre.Text, txtDescripcion.Text, codigoNivel, _
                     cmbSalario.SelectedValue, txtSalario.Text)
                Me.Close()
            Catch ex As Exception
                alertarError()
            End Try
            alertarExito()
    End Sub

    ''' <summary>
    ''' Instanciacion
    ''' </summary>
    ''' <param name="p_codigoNivel">Codigo del nivel</param>
    ''' <remarks></remarks>
    Public Sub New(ByVal p_codigoNivel As Integer)
        InitializeComponent()
        codigoNivel = p_codigoNivel
    End Sub

    ''' <summary>
    ''' Evita texto en salario
    ''' </summary>
    ''' <param name="sender"></param>
    ''' <param name="e"></param>
    ''' <remarks></remarks>
    Private Sub txtSalario_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtSalario.KeyPress
        If e.KeyChar = "." Then
            If txtSalario.Text.IndexOf(".") > -1 Then
                e.Handled = True
            End If
        ElseIf Char.IsNumber(e.KeyChar) = False AndAlso Char.IsControl(e.KeyChar) = False Then
            e.Handled = True
        End If
    End Sub

    Private Sub btnCancelar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCancelar.Click
        Me.Close()
    End Sub
End Class